/**
 * 公共脚本文件
 * 处理所有页面共享的逻辑
 */

// 在页面加载时执行
document.addEventListener('DOMContentLoaded', function() {
    // 初始化通用UI元素
    initCommonUI();
    
    // 检查登录状态
    checkAuthStatus();
    
    // 设置全局事件监听器
    setupGlobalEventListeners();
});

/**
 * 初始化通用UI元素
 */
function initCommonUI() {
    // 初始化用户下拉菜单
    setupUserMenu();
    
    // 初始化侧边栏折叠功能
    setupSidebar();
    
    // 设置退出登录按钮
    setupLogoutButton();
}

/**
 * 设置用户下拉菜单
 */
function setupUserMenu() {
    const userMenuBtn = document.getElementById('userMenuBtn');
    const userDropdown = document.getElementById('userDropdown');
    
    if (userMenuBtn && userDropdown) {
        userMenuBtn.addEventListener('click', function(e) {
            e.stopPropagation();
            userDropdown.classList.toggle('active');
        });
        
        // 点击页面其他区域关闭下拉菜单
        document.addEventListener('click', function() {
            userDropdown.classList.remove('active');
        });
    }
}

/**
 * 设置侧边栏折叠功能
 */
function setupSidebar() {
    const sidebarToggle = document.getElementById('sidebarToggle');
    const logoElement = document.querySelector('.sidebar .logo');
    
    // 切换侧边栏状态的函数
    function toggleSidebar() {
        document.documentElement.classList.toggle('sidebar-collapsed');
        
        // 保存当前状态到localStorage
        const isCollapsed = document.documentElement.classList.contains('sidebar-collapsed');
        localStorage.setItem('sidebarCollapsed', isCollapsed);
    }
    
    // 从localStorage恢复侧边栏状态
    const isSidebarCollapsed = localStorage.getItem('sidebarCollapsed') === 'true';
    
    // 应用保存的状态
    if (isSidebarCollapsed) {
        document.documentElement.classList.add('sidebar-collapsed');
    }
    
    // 点击切换按钮时切换状态
    if (sidebarToggle) {
        sidebarToggle.addEventListener('click', function(e) {
            e.preventDefault();
            toggleSidebar();
        });
    }
    
    // 点击Logo时也切换状态
    if (logoElement) {
        logoElement.style.cursor = 'pointer';
        logoElement.addEventListener('click', function(e) {
            e.preventDefault();
            toggleSidebar();
        });
    }
}

/**
 * 设置退出登录按钮
 */
function setupLogoutButton() {
    const logoutBtns = document.querySelectorAll('#logoutBtn, .logout');
    
    logoutBtns.forEach(btn => {
        if (btn) {
            btn.addEventListener('click', function(e) {
                e.preventDefault();
                if (window.logout) {
                    window.logout();
                }
            });
        }
    });
}

/**
 * 检查登录状态
 */
function checkAuthStatus() {
    // 登录页面不需要检查
    if (window.location.pathname.includes('/login')) {
        return;
    }
    
    // 检查是否已登录
    if (window.isAuthenticated && !window.isAuthenticated()) {
        // 重定向到登录页面
        window.location.href = '/login?redirect=' + encodeURIComponent(window.location.pathname);
    } else {
        // 尝试更新用户信息
        updateUserInfo();
    }
}

/**
 * 更新用户信息显示
 */
function updateUserInfo() {
    if (window.refreshUserInfo) {
        window.refreshUserInfo()
            .then(userInfo => {
                if (userInfo) {
                    // 更新用户名显示
                    const userNameElement = document.querySelector('.user-name');
                    if (userNameElement) {
                        userNameElement.textContent = userInfo.name || userInfo.username || 'User';
                    }
                    
                    // 更新头像显示
                    const avatarElement = document.querySelector('.avatar span');
                    if (avatarElement && userInfo.name) {
                        const nameParts = userInfo.name.split(' ');
                        if (nameParts.length > 1) {
                            avatarElement.textContent = nameParts[0].charAt(0) + nameParts[1].charAt(0);
                        } else {
                            avatarElement.textContent = userInfo.name.substring(0, 2).toUpperCase();
                        }
                    }
                }
            })
            .catch(error => {
                console.warn('无法获取用户信息:', error);
            });
    }
}

/**
 * 设置全局事件监听器
 */
function setupGlobalEventListeners() {
    // 监听所有表单提交，防止意外的页面刷新
    document.addEventListener('submit', function(e) {
        // 检查表单是否有指定处理方式
        if (!e.target.hasAttribute('data-submit')) {
            e.preventDefault();
        }
    });
} 